home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-04-05 | 32.5 KB | 1,033 lines |
- '*************************************************************************************************
- '
- ' START.MST
- '
- ' FreeMIDI/FreeStyle for Windows setup script
- '
- ' (C) Copyright 1995 by Mark of the Unicorn, Inc.
- '
- '*************************************************************************************************
-
-
- '*************************************************************************************************
- ' resource ids
- '
- ' NOTE: These ids should be kept in sync with those in FMSETUP.RH!
- '*************************************************************************************************
- ' bitmaps...
- CONST BMP_MOTU_LOGO = 1
-
- ' dialogs...
- CONST DLG_WELCOME = 1
- CONST DLG_FOLDERS = 2
- CONST DLG_READY = 3
- CONST DLG_HELP = 5
- CONST DLG_SPECIAL = 6
- CONST DLG_ASK_ABOUT_ICONS = 10
- CONST DLG_COMPLETE_WITHOUT_ICONS = 11
- CONST DLG_COMPLETE_WITH_ICONS = 12
- CONST DLG_ASK_KORG_DRIVERS = 14
- CONST DLG_ASK_MOTU_DRIVERS = 15
- CONST DLG_UPDATE_KORG_DRIVERS = 16
- CONST DLG_UPDATE_MOTU_DRIVERS = 17
- CONST DLG_ASK_ABOUT_ICONS_95 = 18
- CONST DLG_COMPLETE_WITH_ICONS_95 = 19
- CONST DLG_COMPLETE_WITHOUT_ICONS_95 = 20
- CONST DLG_RESTART_WITHOUT_ICONS = 22
- CONST DLG_RESTART_WITH_ICONS = 23
- CONST DLG_RESTART_WITHOUT_ICONS_95 = 24
- CONST DLG_RESTART_WITH_ICONS_95 = 25
- CONST DLG_ASK_OPEN_MID = 26
- CONST DLG_LICENSE = 27
- CONST DLG_WELCOME_KORG = 28
- CONST DLG_WELCOME_DEMO = 29
- CONST DLG_ASK_DIRECT_DRIVERS = 35
- CONST DLG_INSTALL_DRIVERS = 36
- CONST DLG_RUN_CONTROL_PANEL = 37
- CONST DLG_RUN_CONTROL_PANEL_95 = 38
- CONST DLG_UPDATE_DRIVERS = 39
- CONST DLG_WELCOME_ROLAND = 40
-
- ' error strings...
- CONST ERR_NO_CONTROL_PANEL = 100
- CONST ERR_NO_VIEW_README = 101
- CONST ERR_NO_PROGMAN = 102
- CONST ERR_BAD_PATH = 103
- CONST ERR_NOT_LOCAL_DRIVE = 104
- CONST ERR_SHARED_WINDOWS = 105
- CONST ERR_SLOW_MACHINE = 106
- CONST ERR_NONWRITABLE_PATH = 107
- CONST ERR_NONWRITABLE_SYSTEM_PATH = 108
- CONST ERR_NO_DISK_SPACE = 109
- CONST ERR_FREESTYLE_RUNNING = 110
- CONST ERR_RESTART_FAILED = 111
- CONST ERR_NO_REGEDIT = 113
- CONST ERR_NO_INSTALL_FONT = 114
-
- ' message strings...
- CONST MSG_RESTART_INFO = 112
- CONST MSG_RUN_AGAIN = 115
-
- ' WinHelp topic identifiers...
- CONST HLP_QUICK_START_GUIDE = 318
-
-
- '*************************************************************************************************
- ' for use with ShowWindow
- '*************************************************************************************************
- CONST SW_SHOWNORMAL = 1
- CONST SW_SHOWNOACTIVATE = 4
- CONST SW_RESTORE = 9
-
-
- '*************************************************************************************************
- ' "imports"
- '*************************************************************************************************
- DECLARE SUB MessageBeep LIB "user.exe" (uType%)
- DECLARE SUB ShowWindow LIB "user.exe" (hwnd%, uShowCmd%)
- DECLARE FUNCTION WinExec LIB "kernel.dll" (szPath$, iCmdShow%) AS INTEGER
- '$ifndef DEBUG
- DECLARE FUNCTION FValidFATDir LIB "mscomstf.dll" (szDir$) AS INTEGER
- '$endif
- DECLARE FUNCTION QueryForOldMotUDrivers LIB "setuplib.dll" AS INTEGER
- DECLARE FUNCTION QueryForOldKorgDrivers LIB "setuplib.dll" AS INTEGER
- DECLARE FUNCTION QueryForOldRolandDrivers LIB "setuplib.dll" AS INTEGER
- DECLARE FUNCTION QueryForNewDrivers LIB "setuplib.dll" AS INTEGER
- DECLARE FUNCTION IsQuickScribeFontInstalled LIB "setuplib.dll" AS INTEGER
- DECLARE FUNCTION InstallFont LIB "setuplib.dll" (szFontFile$, szFontPath$) AS INTEGER
- DECLARE FUNCTION IsFreeStyleOrFreeMIDILoaded LIB "setuplib.dll" (szAltFreeStyleName$) AS INTEGER
-
-
- '*************************************************************************************************
- ' globals (initialized by SL_START)
- '*************************************************************************************************
- GLOBAL g_SetupLibName$ ' SETUPLIB.DLL
- GLOBAL g_SourcePath$ ' path of installation diskettes
- GLOBAL g_TempPath$ ' path of temporary setup directory
- GLOBAL g_FontFileName$ ' name of FreeStyle's QuickScribe font
- GLOBAL g_FreeStyleName$
- GLOBAL g_FreeStyleFullName$
- GLOBAL g_FreeStyleEXEName$
- GLOBAL g_FreeStyleHLPName$
- GLOBAL g_DLG_ASK_ABOUT_ICONS%
- GLOBAL g_DLG_COMPLETE_WITH_ICONS%
- GLOBAL g_DLG_COMPLETE_WITHOUT_ICONS%
- GLOBAL g_DLG_RUN_CONTROL_PANEL%
- GLOBAL g_IsWindows95%
- GLOBAL g_DLG_WELCOME%
- GLOBAL g_ShowQuickStartGuide%
- GLOBAL g_EnoughDiskSpace%
- GLOBAL g_CopyListPrepared%
-
-
- '$INCLUDE 'initvars.mst'
-
-
- '*************************************************************************************************
- '
- ' SL_START
- '
- ' NOTE: Called by SETUPLIB.MST
- '
- '*************************************************************************************************
- SL_START:
- ' init internal variables...
-
- GOSUB INIT_GLOBAL_VARS
-
- ' set other globals
- g_SetupLibName$ = "SETUPLIB.DLL"
- g_SourcePath$ = GetSymbolValue("STF_SRCDIR")
- g_TempPath$ = GetSymbolValue("STF_CWDDIR")
- g_FontFileName$ = "QUICS___.TTF"
- g_FreeStyleEXEName$ = g_FreeStyleShortName$ + ".EXE"
- g_FreeStyleHLPName$ = g_FreeStyleShortName$ + ".HLP"
- g_EnoughDiskSpace% = 0
- g_CopyListPrepared% = 0
-
- ' first assume Windows 3.1...
- g_DLG_ASK_ABOUT_ICONS% = DLG_ASK_ABOUT_ICONS
- g_DLG_RUN_CONTROL_PANEL% = DLG_RUN_CONTROL_PANEL
- g_DLG_COMPLETE_WITH_ICONS% = DLG_COMPLETE_WITH_ICONS
- g_DLG_COMPLETE_WITHOUT_ICONS% = DLG_COMPLETE_WITHOUT_ICONS
- g_DLG_RESTART_WITH_ICONS% = DLG_RESTART_WITH_ICONS
- g_DLG_RESTART_WITHOUT_ICONS% = DLG_RESTART_WITHOUT_ICONS
- g_IsWindows95 = 0
-
- ' ...then check for Windows 95...
- IF GetWindowsMajorVersion() = 3 THEN
- IF GetWindowsMinorVersion() >= 95 THEN
- g_DLG_ASK_ABOUT_ICONS% = DLG_ASK_ABOUT_ICONS_95
- g_DLG_RUN_CONTROL_PANEL% = DLG_RUN_CONTROL_PANEL_95
- g_DLG_COMPLETE_WITH_ICONS% = DLG_COMPLETE_WITH_ICONS_95
- g_DLG_COMPLETE_WITHOUT_ICONS% = DLG_COMPLETE_WITHOUT_ICONS_95
- g_DLG_RESTART_WITH_ICONS% = DLG_RESTART_WITH_ICONS_95
- g_DLG_RESTART_WITHOUT_ICONS% = DLG_RESTART_WITHOUT_ICONS_95
- g_IsWindows95 = 1
- END IF
- END IF
-
- ' setup toolkit symbols and variables...
- SetSymbolValue "SYM_SL_SETUP_TITLE", g_FreeStyleFullName$ + " " + g_WordForSetup$
- SetSymbolValue "SYM_SL_NEEDS_CTL3D", "Y"
- SetTitle GetSymbolValue("SYM_SL_SETUP_TITLE")
- SetBitmap g_SetupLibName$, BMP_MOTU_LOGO
- SetAbout GetSymbolValue("SYM_SL_SETUP_TITLE"), "Copyright (C) 1995-1996 by Mark of the Unicorn, Inc."
- NotUsed% = SetBeepingMode(1)
-
- ' init setup symbols...
-
- SetSymbolValue "IDC_FREESTYLE_PATH", GetIniKeyString("WIN.INI", "FreeStyle.Setup", "folder")
- IF GetSymbolValue("IDC_FREESTYLE_PATH") = "" THEN
- GetLocalHardDrivesList("SYM_DRIVES")
- SetSymbolValue "IDC_FREESTYLE_PATH", GetListItem("SYM_DRIVES", 1) + ":\" + g_FreeStyleShortName$
- END IF
-
- ' setup some custom symbols
- SetSymbolValue "IDC_FREEMIDI_PATH", LCASE$(GetWindowsDir()) + "FreeMIDI"
- SetSymbolValue "SYM_ADD_PROGMAN_ICONS", "Y"
- SetSymbolValue "SYM_HAS_MOTU_DRIVERS", "N"
- SetSymbolValue "SYM_HAS_KORG_DRIVERS", "N"
- SetSymbolValue "SYM_INSTALL_FONTS", "Y"
-
- ' create list of brands to maybe ask user about (see ASK_ABOUT_OTHER_DRIVERS)
- AddListItem "BRAND_LIST", "KORG (PC I/F)"
- AddListItem "BRAND_LIST", "Roland (serial MIDI)"
-
- GOTO WELCOME
-
-
- '*************************************************************************************************
- '
- ' WELCOME
- '
- '*************************************************************************************************
- WELCOME:
- UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_WELCOME%, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
-
- IF UserChoice$ = "IDC_NEXT" THEN
-
- UIPop 1
-
- ' make sure we can install stuff
- CHECK_FOR_LOADED_MODULES:
- IF IsFreeStyleOrFreeMIDILoaded(g_FreeStyleShortName$) = 1 THEN
- Button% = sl_MessageBoxFromId(ERR_FREESTYLE_RUNNING, MB_RETRYCANCEL + MB_ICONSTOP)
- IF Button% = IDRETRY THEN
- GOTO CHECK_FOR_LOADED_MODULES
- ELSE
- GOTO SL_END
- END IF
- END IF
-
- ' make sure user is cool
- IF g_ShowLicenseAgreement% THEN
- GOSUB ASK_LICENSE_AGREEMENT ' NOTE: does not return is user does not accept license
- END IF
-
- ' make sure we can install on this machine
- GOSUB CHECK_REQUIREMENTS
-
- ' make sure MotU MIDI driver are up-to-date...
- HasOldMotUDrivers% = QueryForOldMotUDrivers()
- HasOldKorgDrivers% = QueryForOldKorgDrivers()
- HasOldRolandDrivers% = QueryForOldRolandDrivers()
-
- ' empty the list and add items, if necessary
- SetSymbolValue "UPDATE_BRAND_LIST", ""
- SetSymbolValue "UPDATE_BRAND_LIST", ""
-
- IF HasOldMotUDrivers% = 1 THEN
- AddListItem "UPDATE_BRAND_LIST", "Mark of the Unicorn"
- END IF
-
- IF HasOldKorgDrivers% = 1 THEN
- AddListItem "UPDATE_BRAND_LIST", "KORG (PC I/F)"
- END IF
-
- IF HasOldRolandDrivers% = 1 THEN
- AddListItem "UPDATE_BRAND_LIST", "Roland (serial MIDI)"
- END IF
-
- IF GetListLength("UPDATE_BRAND_LIST") > 0 THEN
- GOTO UPDATE_DRIVERS
- END IF
-
- IF QueryForNewDrivers() = 0 THEN
- GOSUB ASK_ABOUT_DRIVERS
- END IF
-
- GOTO SELECT_FOLDERS
-
- ELSE
- GOSUB SL_QUERY_QUIT ' NOTE: does not return if user decides to quit
- GOTO WELCOME
- END IF
-
-
- '*************************************************************************************************
- '
- ' ASK_LICENSE_AGREEMENT
- '
- '*************************************************************************************************
- ASK_LICENSE_AGREEMENT:
- UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_LICENSE, "DLG_LICENSE_Proc", DLG_HELP, "DLG_HELP_Proc")
- UIPop 1
-
- IF UserChoice$ = "IDCANCEL" THEN
- GOSUB SL_QUERY_QUIT ' NOTE: does not return if user decides to quit
- GOTO ASK_LICENSE_AGREEMENT
- END IF
-
- IF UserChoice$ = "IDYES" THEN
- RETURN
- END IF
-
- IF UserChoice$ = "IDNO" THEN
- GOTO SL_END
- END IF
-
- GOTO SL_FAIL ' NOTE: should not happen!
-
-
- '*************************************************************************************************
- '
- ' CHECK_REQUIREMENTS
- '
- '*************************************************************************************************
- CHECK_REQUIREMENTS:
- ' make sure Windows is not a network installation
- IF IsWindowsShared() = 1 THEN
- NotUsed% = sl_MessageBoxFromId(ERR_SHARED_WINDOWS, MB_OK + MB_ICONSTOP)
- GOTO SL_END
- END IF
-
- ' second check to make sure can write to the system folder
- IF IsDirWritable(GetWindowsSysDir()) = 0 THEN
- NotUsed% = sl_MessageBoxFromId(ERR_NONWRITABLE_SYSTEM_PATH, MB_OK + MB_ICONSTOP)
- GOTO SL_FAIL
- END IF
-
- ' make sure machine is not too slow
- IF GetProcessorType() < 4 THEN
- NotUsed% = sl_MessageBoxFromId(ERR_SLOW_MACHINE, MB_OK + MB_ICONSTOP)
- GOTO SL_END
- END IF
-
- ' check RAM ?
-
- RETURN
-
-
- '*************************************************************************************************
- '
- ' UPDATE_DRIVERS
- '
- '*************************************************************************************************
- UPDATE_DRIVERS:
- UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_UPDATE_DRIVERS, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
- UIPop 1
-
- IF UserChoice$ = "IDCANCEL" THEN
- GOSUB SL_QUERY_QUIT ' NOTE: does not return if user decides to quit
- GOTO UPDATE_DRIVERS
- END IF
-
- IF UserChoice$ = "IDC_PREV" THEN
- ' GOTO ASK_ABOUT_DRIVERS
- GOTO WELCOME
- END IF
-
- IF UserChoice$ = "IDC_NEXT" THEN
- GOSUB RUN_CONTROL_PANEL
- GOTO UPDATE_DRIVERS
- END IF
-
- GOTO SL_FAIL ' NOTE: should not happen!
-
-
- '*************************************************************************************************
- '
- ' UPDATE_MOTU_DRIVERS
- '
- '*************************************************************************************************
- 'UPDATE_MOTU_DRIVERS:
- ' UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_UPDATE_MOTU_DRIVERS, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
- ' UIPop 1
- '
- ' IF UserChoice$ = "IDCANCEL" THEN
- ' GOSUB SL_QUERY_QUIT ' NOTE: does not return if user decides to quit
- ' GOTO UPDATE_MOTU_DRIVERS
- ' END IF
- '
- ' IF UserChoice$ = "IDC_PREV" THEN
- ' GOTO ASK_ABOUT_DRIVERS
- ' END IF
- '
- ' IF UserChoice$ = "IDC_NEXT" THEN
- ' GOSUB RUN_CONTROL_PANEL
- ' GOTO UPDATE_MOTU_DRIVERS
- ' END IF
- '
- ' GOTO SL_FAIL ' NOTE: should not happen!
-
-
- '*************************************************************************************************
- '
- ' UPDATE_KORG_DRIVERS
- '
- '*************************************************************************************************
- 'UPDATE_KORG_DRIVERS:
- ' UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_UPDATE_KORG_DRIVERS, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
- '
- ' IF UserChoice$ = "IDCANCEL" THEN
- ' GOSUB SL_QUERY_QUIT ' NOTE: does not return if user decides to quit
- ' GOTO UPDATE_KORG_DRIVERS
- ' END IF
- '
- ' UIPop 1
- '
- ' IF UserChoice$ = "IDC_PREV" THEN
- ' GOTO ASK_ABOUT_DRIVERS
- ' END IF
- '
- ' IF UserChoice$ = "IDC_NEXT" THEN
- ' GOSUB RUN_CONTROL_PANEL
- ' GOTO UPDATE_KORG_DRIVERS
- ' END IF
- '
- ' GOTO SL_FAIL ' NOTE: should not happen!
-
-
- '*************************************************************************************************
- '
- ' ASK_ABOUT_DRIVERS
- '
- '*************************************************************************************************
- ASK_ABOUT_DRIVERS:
- UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_ASK_MOTU_DRIVERS, "DLG_ASK_MOTU_DRIVERS_Proc", DLG_HELP, "DLG_HELP_Proc")
-
- IF UserChoice$ = "IDCANCEL" THEN
- GOSUB SL_QUERY_QUIT ' NOTE: does not return if user decides to quit
- GOTO ASK_ABOUT_DRIVERS
- END IF
-
- UIPop 1
-
- IF UserChoice$ = "IDC_PREV" THEN
- GOTO WELCOME
- END IF
-
- IF UserChoice$ = "IDC_NEXT" THEN
- GOTO ASK_ABOUT_OTHER_DRIVERS
- END IF
-
- GOTO SL_FAIL ' NOTE: should not happen!
-
- 'ASK_ABOUT_KORG_DRIVERS:
- ' UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_ASK_KORG_DRIVERS, "DLG_ASK_KORG_DRIVERS_Proc", DLG_HELP, "DLG_HELP_Proc")
-
- ASK_ABOUT_OTHER_DRIVERS:
-
- SetSymbolValue "UPDATE_BRAND_LIST", ""
- IF GetSymbolValue("SYM_HAS_MOTU_DRIVERS") = "Y" THEN
- AddListItem "UPDATE_BRAND_LIST", "Mark of the Unicorn"
- END IF
-
- UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_ASK_DIRECT_DRIVERS, "DLG_ASK_DIRECT_DRIVERS_Proc", DLG_HELP, "DLG_HELP_Proc")
-
- IF UserChoice$ = "IDCANCEL" THEN
- GOSUB SL_QUERY_QUIT ' NOTE: does not return if user decides to quit
- ' GOTO ASK_ABOUT_KORG_DRIVERS
- GOTO ASK_ABOUT_OTHER_DRIVERS
- END IF
-
- UIPop 1
-
- IF UserChoice$ = "IDC_PREV" THEN
- GOTO ASK_ABOUT_DRIVERS
- END IF
-
- IF UserChoice$ = "IDC_NEXT" THEN
-
- IF GetListLength("UPDATE_BRAND_LIST") > 0 THEN
- GOTO INSTALL_DRIVERS
- END IF
-
- ' IF GetSymbolValue("SYM_HAS_MOTU_DRIVERS") = "Y" THEN
- ' GOTO INSTALL_DRIVERS
- ' END IF
- ' IF GetSymbolValue("SYM_HAS_KORG_DRIVERS") = "Y" THEN
- ' GOTO INSTALL_DRIVERS
- ' END IF
-
- RETURN
-
- END IF
-
- GOTO SL_FAIL ' NOTE: should not happen!
-
-
- '*************************************************************************************************
- '
- ' INSTALL_DRIVERS
- '
- '*************************************************************************************************
- INSTALL_DRIVERS:
- UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_INSTALL_DRIVERS, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
-
- IF UserChoice$ = "IDCANCEL" THEN
- GOSUB SL_QUERY_QUIT ' NOTE: does not return if user decides to quit
- GOTO INSTALL_DRIVERS
- END IF
-
- UIPop 1
-
- IF UserChoice$ = "IDC_PREV" THEN
- GOTO ASK_ABOUT_DRIVERS
- END IF
-
- IF UserChoice$ = "IDC_NEXT" THEN
- ' IF GetSymbolValue("SYM_HAS_LATEST_MOTU_DRIVERS") = "N" THEN
- GOSUB RUN_CONTROL_PANEL
- GOTO INSTALL_DRIVERS
- ' ELSE
- ' RETURN
- ' END IF
- END IF
-
- GOTO SL_FAIL ' NOTE: should not happen!
-
-
- '*************************************************************************************************
- '
- ' RUN_CONTROL_PANEL
- '
- '*************************************************************************************************
- RUN_CONTROL_PANEL:
- UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_RUN_CONTROL_PANEL%, "DLG_RUN_CONTROL_PANEL_Proc", DLG_HELP, "DLG_HELP_Proc")
-
- IF UserChoice$ = "IDCANCEL" THEN
- GOSUB SL_QUERY_QUIT ' NOTE: does not return if user decides to quit
- GOTO RUN_CONTROL_PANEL
- END IF
-
- UIPop 1
-
- IF UserChoice$ = "IDC_PREV" THEN
- RETURN
- END IF
-
- IF UserChoice$ = "IDC_NEXT" THEN
-
- NotUsed% = sl_MessageBoxFromId(MSG_RUN_AGAIN, MB_OK + MB_ICONINFORMATION)
-
- ShowWindow HwndFrame(), SW_HIDE
-
- IF g_IsWindows95% = 0 THEN
- ' Windows 3.1 method...
- IF WinExec("control " + g_DriversIconName$, SW_SHOWNOACTIVATE) >= 32 THEN
- GOTO CONTROL_PANEL_OK
- ENDIF
- ELSE
- ' Windows 95 method...
- IF WinExec("control", SW_SHOWNOACTIVATE) >= 32 THEN
- GOTO CONTROL_PANEL_OK
- ENDIF
- END IF
- NotUsed% = sl_MessageBoxFromId(ERR_NO_CONTROL_PANEL, MB_OK + MB_ICONEXCLAMATION)
-
- CONTROL_PANEL_OK:
- GOTO SL_END
- END IF
-
- GOTO SL_FAIL ' NOTE: should not happen!
-
-
- '*************************************************************************************************
- '
- ' SELECT_FOLDERS:
- '
- '*************************************************************************************************
- SELECT_FOLDERS:
- UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_FOLDERS, "DLG_FOLDERS_Proc", DLG_HELP, "DLG_HELP_Proc")
-
- IF UserChoice$ = "IDCANCEL" THEN
- GOSUB SL_QUERY_QUIT ' NOTE: does not return if user decides to quit
- GOTO SELECT_FOLDERS
- END IF
-
- IF UserChoice$ = "IDC_NEXT" THEN
- FreeStylePath$ = GetSymbolValue("IDC_FREESTYLE_PATH")
-
- ' make sure path is valid
- IF FValidFATDir(FreeStylePath$) = 0 THEN
- NotUsed% = sl_MessageBoxFormatFromId_s(ERR_BAD_PATH, FreeStylePath$, MB_OK + MB_ICONEXCLAMATION)
- GOTO SELECT_FOLDERS
- END IF
-
- ' make sure path is writable
- IF IsDirWritable(FreeStylePath$) = 0 THEN
- NotUsed% = sl_MessageBoxFormatFromId_s(ERR_NONWRITABLE_PATH, FreeStylePath$, MB_OK + MB_ICONEXCLAMATION)
- GOTO SELECT_FOLDERS
- END IF
-
- ' make sure path's disk is local
- IF IsDriveLocalHard(FreeStylePath$) = 0 THEN
- NotUsed% = sl_MessageBoxFormatFromId_s(ERR_NOT_LOCAL_DRIVE, UCASE$(CHR$(ASC(FreeStylePath$))), MB_OK + MB_ICONINFORMATION)
- GOTO SELECT_FOLDERS
- END IF
-
- UIPop 1
- GOTO ASK_ABOUT_ICONS
- END IF
-
- IF UserChoice$ = "IDC_PREV" THEN
- UIPop 1
- GOTO WELCOME
- END IF
-
- GOTO SL_FAIL ' NOTE: should not happen!
-
-
- '*************************************************************************************************
- '
- ' ASK_ABOUT_ICONS
- '
- '*************************************************************************************************
- ASK_ABOUT_ICONS:
- UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_ASK_ABOUT_ICONS%, "DLG_ASK_ABOUT_ICONS_Proc", DLG_HELP, "DLG_HELP_Proc")
-
- IF UserChoice$ = "IDCANCEL" THEN
- GOSUB SL_QUERY_QUIT
- GOTO ASK_ABOUT_ICONS
- END IF
-
- UIPop 1
-
- IF UserChoice$ = "IDC_NEXT" THEN
- GOTO ASK_OPEN_MID
- END IF
-
- IF UserChoice$ = "IDC_PREV" THEN
- GOTO SELECT_FOLDERS
- END IF
-
- GOTO SL_FAIL ' NOTE: should not happen!
-
-
- '*************************************************************************************************
- '
- ' ASK_OPEN_MID
- '
- '*************************************************************************************************
- ASK_OPEN_MID:
- UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_ASK_OPEN_MID, "DLG_ASK_OPEN_MID_Proc", DLG_HELP, "DLG_HELP_Proc")
-
- IF UserChoice$ = "IDCANCEL" THEN
- GOSUB SL_QUERY_QUIT
- GOTO ASK_OPEN_MID
- END IF
-
- UIPop 1
-
- IF UserChoice$ = "IDC_NEXT" THEN
- GOTO READY_TO_INSTALL
- END IF
-
- IF UserChoice$ = "IDC_PREV" THEN
- GOTO ASK_ABOUT_ICONS
- END IF
-
- GOTO SL_FAIL ' NOTE: should not happen!
-
-
- '*************************************************************************************************
- '
- ' READY_TO_INSTALL
- '
- '*************************************************************************************************
- READY_TO_INSTALL:
- UserChoice$ = UIStartDlg(g_SetupLibName$, DLG_READY, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
-
- IF UserChoice$ = "IDCANCEL" THEN
- GOSUB SL_QUERY_QUIT ' NOTE: does not return if user decides to quit
- GOTO READY_TO_INSTALL
- END IF
-
- UIPop 1
-
- IF UserChoice$ = "IDC_NEXT" THEN
- GOTO INSTALL_FOLDERS_AND_FILES
- END IF
-
- IF UserChoice$ = "IDC_PREV" THEN
- GOTO ASK_OPEN_MID
- END IF
-
- GOTO SL_FAIL ' NOTE: should not happen!
-
-
- '*************************************************************************************************
- '
- ' CHECK_DISK_SPACE
- '
- '*************************************************************************************************
- CHECK_DISK_SPACE:
- ExtraSpace$ = "EXTRA_SPACE"
- FreeStyleDriveLetter$ = UCASE$(CHR$(ASC(GetSymbolValue("IDC_FREESTYLE_PATH"))))
- FreeStyleDriveNumber% = (ASC(FreeStyleDriveLetter$) - ASC("A"))
- FreeMIDIDriveLetter$ = UCASE$(CHR$(ASC(GetSymbolValue("IDC_FREEMIDI_PATH"))))
- FreeMIDIDriveNumber% = (ASC(FreeMIDIDriveLetter$) - ASC("A"))
-
- ' have Setup toolkit figure out how much space is required on all drives...
- SetSymbolValue ExtraSpace$, ""
- FOR Drive% = 0 TO 25 STEP 1
- IF Drive% = FreeStyleDriveNumber% THEN
- AddListItem ExtraSpace$, "1500000" ' decompresssion space + 0.5MB user work space
- EXIT FOR
- ELSE
- IF Drive% = FreeMIDIDriveNumber% THEN
- AddListItem ExtraSpace$, "1000000" ' decompresssion space
- EXIT FOR
- ELSE
- AddListItem ExtraSpace$, "0"
- END IF
- END IF
- NEXT Drive%
-
- ' if there is not enough room, find first drive that is too small and tell user...
- IF GetCopyListCost(ExtraSpace$, "", "COPY_COSTS") = 0 THEN
- g_EnoughDiskSpace% = 1
- ELSE
- FOR Drive% = 1 TO 26 STEP 1
- IF VAL(GetListItem("COPY_COSTS", Drive%)) > 0 THEN
- Button% = sl_MessageBoxFormatFromId_s(ERR_NO_DISK_SPACE, CHR$(ASC("A") + Drive% - 1), MB_ABORTRETRYIGNORE + MB_ICONSTOP)
-
- IF Button% = IDABORT THEN
- GOTO SL_END
- END IF
-
- IF Button% = IDIGNORE THEN
- g_EnoughDiskSpace% = 1
- ELSE
- g_EnoughDiskSpace% = 0
- END IF
-
- EXIT FOR
-
- ' Button% = sl_MessageBoxFormatFromId_s(ERR_NO_DISK_SPACE, CHR$(ASC("A") + Drive% - 1), MB_RETRYCANCEL + MB_ICONSTOP)
- ' IF Button% = IDCANCEL THEN
- ' GOTO SL_END
- ' END IF
- ' EXIT FOR
-
- END IF
- NEXT Drive%
- END IF
-
- RETURN
-
-
- '*************************************************************************************************
- '
- ' INSTALL_FOLDERS_AND_FILES
- '
- '*************************************************************************************************
- INSTALL_FOLDERS_AND_FILES:
-
- FreeMIDIPath$ = GetSymbolValue("IDC_FREEMIDI_PATH") + "\"
- FreeStylePath$ = GetSymbolValue("IDC_FREESTYLE_PATH") + "\"
- DefNamesPath$ = FreeMIDIPath$ + "DefNames\"
-
- IF g_CopyListPrepared% = 0 THEN
-
- PrevCursor% = ShowWaitCursor
-
- ' if needed, must set now
- SetRestartDir FreeStylePath$
-
- ' read info file
- ReadInfFile g_TempPath$ + "setup.inf"
-
- ' add FreeMIDI files to copy list
- AddSectionFilesToCopyList "FreeMIDI", g_SourcePath$, FreeMIDIPath$
- AddSectionFilesToCopyList "FreeMIDI_System", g_SourcePath$, GetWindowsSysDir()
-
- ' add DefNames files to copy list
- AddSectionFilesToCopyList "DefNames", g_SourcePath$, DefNamesPath$
- AddSectionFilesToCopyList "DefNames_Alesis", g_SourcePath$, DefNamesPath$ + "Alesis"
- AddSectionFilesToCopyList "DefNames_Digitech", g_SourcePath$, DefNamesPath$ + "Digitech"
- AddSectionFilesToCopyList "DefNames_Emu", g_SourcePath$, DefNamesPath$ + "E-mu"
- AddSectionFilesToCopyList "DefNames_Ensoniq", g_SourcePath$, DefNamesPath$ + "Ensoniq"
- AddSectionFilesToCopyList "DefNames_Kawai", g_SourcePath$, DefNamesPath$ + "Kawai"
- AddSectionFilesToCopyList "DefNames_Korg", g_SourcePath$, DefNamesPath$ + "Korg"
- AddSectionFilesToCopyList "DefNames_Kurzweil", g_SourcePath$, DefNamesPath$ + "Kurzweil"
- AddSectionFilesToCopyList "DefNames_Roland", g_SourcePath$, DefNamesPath$ + "Roland"
- AddSectionFilesToCopyList "DefNames_TBS", g_SourcePath$, DefNamesPath$ + "TBS"
- AddSectionFilesToCopyList "DefNames_Yamaha", g_SourcePath$, DefNamesPath$ + "Yamaha"
-
- ' add FreeStyle files to copy list
- AddSectionFilesToCopyList "FreeStyle", g_SourcePath$, FreeStylePath$
- AddSectionFilesToCopyList "FreeStyle_Demos", g_SourcePath$, FreeStylePath$ + "Demos"
- AddSectionFilesToCopyList "FreeStyle_Metronom", g_SourcePath$, FreeStylePath$ + "Metronom"
- AddSectionFilesToCopyList "FreeStyle_System", g_SourcePath$, GetWindowsSysDir()
-
- ' add FreeStyle files to copy list that have different names in different version (all
- ' these files are part of the "FreeStyle_Special" section)
- AddSpecialFileToCopyList "FreeStyle_Special", "ReadMe", g_SourcePath$, FreeStylePath$ + g_ReadMeShortName$
- AddSpecialFileToCopyList "FreeStyle_Special", "FreeStyle_EXE", g_SourcePath$, FreeStylePath$ + g_FreeStyleEXEName$
- AddSpecialFileToCopyList "FreeStyle_Special", "FreeStyle_HLP", g_SourcePath$, FreeStylePath$ + g_FreeStyleHLPName$
- AddSpecialFileToCopyList "FreeStyle_Special", "Player_Library", g_SourcePath$, FreeStylePath$ + g_FreeStyleShortName$ + ".FPL"
-
- IF g_IsWindows95% = 1 THEN
- ' NOTE: I don't know for sure if this is *always* the correct directory for templates!
- AddSectionFilesToCopyList "FreeStyle_ShellNew", g_SourcePath$, GetWindowsDir() + "ShellNew"
- END IF
-
- ' if needed, copy font files and set "install it" flag
- IF IsQuickScribeFontInstalled() = 0 THEN
- AddSectionFilesToCopyList "FreeStyle_Fonts", g_SourcePath$, GetWindowsSysDir()
- SetSymbolValue "SYM_INSTALL_FONTS", "Y"
- ELSE
- SetSymbolValue "SYM_INSTALL_FONTS", "N"
- END IF
-
- ' copy CTL3Dx.DLL when installing on Windows 3.1x, but not Windows 95
- IF g_IsWindows95% = 0 THEN
- AddSectionFilesToCopyList "Ctl3D", g_SourcePath$, GetWindowsSysDir()
- END IF
-
- RestoreCursor(PrevCursor%)
-
- g_CopyListPrepared% = 1
-
- END IF
-
- ' make sure there is enough room
- GOSUB CHECK_DISK_SPACE
- IF g_EnoughDiskSpace% = 0 THEN
- GOTO SELECT_FOLDERS
- END IF
-
- PrevCursor% = ShowWaitCursor
-
- ' save FreeStyle folder
- CreateIniKeyValue "WIN.INI", "FreeStyle.Setup", "folder", GetSymbolValue("IDC_FREESTYLE_PATH"), cmoOverwrite
-
- ' remove any obsolete files
- IF DoesFileExist(FreeMIDIPath$ + "FMSHELP.EXE", femExists) = 1 THEN
- RemoveFile FreeMIDIPath$ + "FMSHELP.EXE", cmoForce
- ' NOTE: this file is now called FMSHELP.TSK
- END IF
- IF DoesFileExist(FreeStylePath$ + "README.TXT", femExists) = 1 THEN
- RemoveFile FreeStylePath$ + "README.TXT", cmoForce
- END IF
-
- ' create FreeMIDI folder
- CreateDir FreeMIDIPath$, cmoVital
-
- ' create FreeStyle folder
- CreateDir FreeStylePath$, cmoVital
- CreateDir FreeStylePath$ + "Demos", cmoVital
- CreateDir FreeStylePath$ + "Metronom", cmoVital
-
- ' create DefNames folders
- '
- ' NOTE: all DefNames-related items in this script should be kept updated!
- '
- CreateDir DefNamesPath$ + "Alesis", cmoVital
- CreateDir DefNamesPath$ + "Digitech", cmoVital
- CreateDir DefNamesPath$ + "E-mu", cmoVital
- CreateDir DefNamesPath$ + "Ensoniq", cmoVital
- CreateDir DefNamesPath$ + "Kawai", cmoVital
- CreateDir DefNamesPath$ + "Korg", cmoVital
- CreateDir DefNamesPath$ + "Kurzweil", cmoVital
- CreateDir DefNamesPath$ + "Roland", cmoVital
- CreateDir DefNamesPath$ + "TBS", cmoVital
- CreateDir DefNamesPath$ + "Yamaha", cmoVital
-
- RestoreCursor(PrevCursor%)
-
- 'DumpCopyList GetSymbolValue("STF_CWDDIR") + "COPYLIST.TXT"
- CopyFilesInCopyList
-
- PrevCursor% = ShowWaitCursor
-
- ' add Registry entries for FreeStyle files
-
- FullFreeStylePath$ = FreeStylePath$ + g_FreeStyleEXEName$
-
- IF g_IsWindows95% = 1 THEN
-
- IF WinExec("regedit /s " + g_TempPath$ + "reg4.dat", 0) < 32 THEN
- NotUsed% = sl_MessageBoxFromId(ERR_NO_REGEDIT, MB_OK + MB_ICONEXCLAMATION)
- GOTO SL_FAIL
- END IF
- SetRegKeyValue "FreeStyle.FSL\DefaultIcon", FullFreeStylePath$ + ",1"
- SetRegKeyValue "FreeStyle.FST\DefaultIcon", FullFreeStylePath$ + ",1"
- SetRegKeyValue "FreeStyle.FSS\DefaultIcon", FullFreeStylePath$ + ",1"
-
- ELSE
-
- IF WinExec("regedit /s " + g_TempPath$ + "reg.dat", 0) < 32 THEN
- NotUsed% = sl_MessageBoxFromId(ERR_NO_REGEDIT, MB_OK + MB_ICONEXCLAMATION)
- GOTO SL_FAIL
- END IF
-
- END IF
-
- SetRegKeyValue "FreeStyle.FSL\shell\open\command", FullFreeStylePath$ + " %1"
- SetRegKeyValue "FreeStyle.FST\shell\open\command", FullFreeStylePath$ + " %1"
- SetRegKeyValue "FreeStyle.FSS\shell\open\command", FullFreeStylePath$ + " %1"
-
- ' add Registry entry for MID files (standard MIDI files)
- IF GetSymbolValue("SYM_OPEN_MID_WITH_FREESTYLE") = "Y" THEN
- CreateRegKeyValue ".MID", "FreeStyle"
- END IF
-
- ' install fonts
- IF GetSymbolValue("SYM_INSTALL_FONTS") = "Y" THEN
- GOSUB INSTALL_FONTS
- END IF
-
- ' add Program Manager icons/Start menu items
- IF GetSymbolValue("SYM_ADD_PROGMAN_ICONS") = "Y" THEN
- GOSUB ADD_PROGMAN_ICONS
- END IF
-
- RestoreCursor(PrevCursor%)
-
- ' let user know lengthy copying is done
- MessageBeep(MB_OK)
-
- GOTO COMPLETE_SETUP
-
-
- '*************************************************************************************************
- '
- ' INSTALL_FONTS
- '
- '*************************************************************************************************
- INSTALL_FONTS:
- PrevCursor% = ShowWaitCursor
- IF InstallFont(g_FontFileName$, GetWindowsSysDir()) = 0 THEN
- NotUsed% = sl_MessageBoxFromId(ERR_NO_INSTALL_FONT, MB_OK + MB_ICONEXCLAMATION)
- GOTO SL_FAIL
- END IF
- RestoreCursor(PrevCursor%)
-
- RETURN
-
-
- '*************************************************************************************************
- '
- ' ADD_PROGMAN_ICONS
- '
- '*************************************************************************************************
- ADD_PROGMAN_ICONS:
- FreeStylePath$ = GetSymbolValue("IDC_FREESTYLE_PATH") + "\"
-
- ' run Program Manager only if running on Windows 3.1...
- IF g_IsWindows95% = 0 THEN
- RETRY_PROGMAN:
- IF WinExec("progman.exe", SW_SHOWNORMAL) < 32 THEN
- Button% = sl_MessageBoxFromId(ERR_NO_PROGMAN, MB_RETRYCANCEL + MB_ICONSTOP)
- IF Button% = IDRETRY THEN
- GOTO RETRY_PROGMAN
- ELSE
- GOTO ABORT_ICONS
- END IF
- END IF
- END IF
-
- CreateProgmanGroup g_FreeStyleFullName$, "", cmoNone
- ShowProgmanGroup g_FreeStyleFullName$, 1, cmoNone
-
- CreateProgmanItem g_FreeStyleFullName$, g_FreeStyleName$, FreeStylePath$ + g_FreeStyleEXEName$, "", cmoOverwrite
- CreateProgmanItem g_FreeStyleFullName$, g_FreeStyleHelpName$, FreeStylePath$ + g_FreeStyleHLPName$, "", cmoOverwrite
- CreateProgmanItem g_FreeStyleFullName$, g_ReadMeLongName$, FreeStylePath$ + g_ReadMeShortName$, "", cmoOverwrite
-
- ABORT_ICONS:
- RETURN
-
-
- '*************************************************************************************************
- '
- ' COMPLETE_SETUP
- '
- '*************************************************************************************************
- COMPLETE_SETUP:
- IF RestartListEmpty() = 0 THEN
- GOTO COMPLETE_SETUP_RESTART
- ELSE
- GOTO COMPLETE_SETUP_NORMAL
- END IF
-
-
- '*************************************************************************************************
- '
- ' COMPLETE_SETUP_NORMAL
- '
- '*************************************************************************************************
- COMPLETE_SETUP_NORMAL:
- IF GetSymbolValue("SYM_ADD_PROGMAN_ICONS") = "Y" THEN
- UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_COMPLETE_WITH_ICONS%, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
- ELSE
- UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_COMPLETE_WITHOUT_ICONS%, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
- END IF
-
- IF UserChoice$ = "IDC_VIEW_README" THEN
- GOSUB VIEW_README_FILE
- GOTO COMPLETE_SETUP_NORMAL
- END IF
-
- IF g_ShowQuickStartGuide% = 1 THEN
- sl_ShowHelpTopic FreeStylePath$ + g_FreeStyleHLPName$, HLP_QUICK_START_GUIDE
- END IF
-
- GOTO SL_END
-
-
- '*************************************************************************************************
- '
- ' COMPLETE_SETUP_RESTART
- '
- '*************************************************************************************************
- COMPLETE_SETUP_RESTART:
- IF GetSymbolValue("SYM_ADD_PROGMAN_ICONS") = "Y" THEN
- UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_RESTART_WITH_ICONS%, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
- ELSE
- UserChoice$ = UIStartDlg(g_SetupLibName$, g_DLG_RESTART_WITHOUT_ICONS%, "DLG_Proc", DLG_HELP, "DLG_HELP_Proc")
- END IF
-
- IF UserChoice$ = "IDC_VIEW_README" THEN
- GOSUB VIEW_README_FILE
- GOTO COMPLETE_SETUP_RESTART
- END IF
-
- NotUsed% = sl_MessageBoxFromId(MSG_RESTART_INFO, MB_OK + MB_ICONINFORMATION)
- GOSUB SL_SHUTDOWN
- NotUsed% = ExitExecRestart()
- GOSUB SL_STARTUP
-
- NotUsed% = sl_MessageBoxFromId(ERR_RESTART_FAILED, MB_OK + MB_ICONEXCLAMATION)
- GOTO SL_FAIL
-
-
- '*************************************************************************************************
- '
- ' VIEW_README_FILE
- '
- '*************************************************************************************************
- VIEW_README_FILE:
-
- ' open file in Notepad
- IF WinExec("notepad.exe " + GetSymbolValue("IDC_FREESTYLE_PATH") + "\" + g_ReadMeShortName$, SW_SHOWNORMAL) >= 32 THEN
- sl_RememberSpawnedWindow
- ELSE
- NotUsed% = sl_MessageBoxFromId(ERR_NO_VIEW_README, MB_OK + MB_ICONEXCLAMATION)
- END IF
-
- RETURN
-